package main

import "fmt"

/*
数组中出现次数超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半，请找出这个数字。
你可以假设数组是非空的，并且给定的数组总是存在多数元素。

示例 1:
输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]
输出: 2
*/

//哈希
func majorityElement(nums []int) int {
	str := make(map[int]int)
	ls := len(nums) / 2
	var res int
	for _, s := range nums {
		str[s]++
		if str[s] > ls {
			res = s
			break
		}
	}
	return res
}

func main() {
	n := []int{1, 2, 3, 2, 2, 2, 5, 4, 2}
	fmt.Println(majorityElement(n))
}
